package com.cwt.common.utils;

import org.springframework.beans.BeanUtils;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @description: bean util
 * @author: xijie.wang
 */
public class ClassUtils {

    /**
     * 属性拷贝，并返回新对象
     *
     * @param target 目标对象
     * @param source 原对象
     * @return P
     */
    public static <P, T> P copyProperties(Class<P> target, T source) {
        P p = BeanUtils.instantiateClass(target);
        BeanUtils.copyProperties(source, p);
        return p;
    }

    /**
     * 拷贝list
     *
     * @param source 原对象
     * @param target 目标对象
     * @param <F>    泛型
     * @param <T>    泛型
     * @return 拷贝数据
     */
    public static <T, F> List<T> copyList(List<F> source, Class<T> target) {
        return source.stream().map(t -> copyProperties(target, t)).collect(Collectors.toList());
    }


}
